package com.zzw.springcloud.config;

import com.netflix.loadbalancer.IRule;
import com.netflix.loadbalancer.RoundRobinRule;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class RibbonRole {

    @Bean
    public IRule getRibbonRule() {
        // RandomRule: 随机
        // RoundRobinRule: 轮询
        // RetryRule: 先按照RoundRobinRule的策略获取服务，如果获取服务失败则在指定时间内会进行重试，获取可用的服务
        // BestAvailableRule: 会先过滤掉由于多次访问故障而处于断路器跳闸状态的服务，然后选择一个并发量最小的服务
        // AvailabilityFilteringRule: 先过滤掉故障实例，再选择并发较小的实例
        // ZoneAvoidanceRule: 默认规则，符合判断server所在区域的性能和server的可用性选择服务器
        return new RoundRobinRule();
    }
}
